package com.sunwayhorizo.health.business.patad.integration;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.dto.PageDTO;
import com.sunwayhorizo.health.business.dto.ResultsDTO;
import com.sunwayhorizo.health.hl7.common.Hl7Exception;

@Local
public interface PatientQualityControlManagerLocal
{
    /**
     * 修改患者的跟踪状态
     * @param actId         动作Id
     * @param traceFlag     跟踪状态 1为跟踪，0为未跟踪
     * @return ResultsDTO   成功返回true，并提示成功信息
     * @throws Hl7Exception
     */
    public ResultsDTO updatePatientTrackFlag(String actId,String trackFlag) throws Hl7Exception;
    
    /**
     * 查询在院患者列表
     * @param workGroupId   工作组
     * @return ResultsDTO   查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findInPatientListByWorkGroup(String workGroupId) throws Hl7Exception;
    
    /**
     * 查询在院患者列表
     * @param workGroupId   工作组
     * @param pageDTO       分页信息
     * @return ResultsDTO   查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findInPatientListByWorkGroup(String workGroupId,PageDTO pageDTO) throws Hl7Exception;

    /**
     * 查询在院的危重患者列表
     * @param workGroupId   工作组
     * @param pageDTO       分页信息
     * @return ResultsDTO   查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findInPatientListByWorkGroupAndCritical(String workGroupId, PageDTO pageDTO) throws Hl7Exception;

    /**
     * 查询在院的手术患者列表
     * @param workGroupId   工作组
     * @param pageDTO       分页信息
     * @return ResultsDTO   查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findInPatientListByWorkGroupAndSurgery(String workGroupId, PageDTO pageDTO) throws Hl7Exception;

    /**
     * 查询在院的输血患者列表
     * @param workGroupId   工作组
     * @param pageDTO       分页信息
     * @return ResultsDTO   查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findInPatientListByWorkGroupAndTransfuse(String workGroupId, PageDTO pageDTO) throws Hl7Exception;

    /**
     * 查询出院方式的患者列表
     * @param workGroupId       工作组
     * @param levelHospitalCode 出院方式的编码，在术语中，1 正常，2 转院，3 死亡
     * @param startTime         开始时间
     * @param endTime           结束时间
     * @param pageDTO           分页信息
     * @return ResultsDTO       查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findOutPatientListByWorkGroupAndLeaveHospital(String workGroupId, String leaveHospitalCode, String startTime,String endTime, PageDTO pageDTO) throws Hl7Exception;

    /**
     * 查询入院跟踪或不被跟踪的患者列表
     * @param workGroupId   工作组
     * @param trackFlag     0不被跟踪，1被跟踪
     * @param pageDTO       分页信息
     * @return ResultsDTO   查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findInPatientListByWorkGroupIdAndTrackFlag(String workGroupId, String trackFlag, PageDTO pageDTO) throws Hl7Exception;

    /**
     * 查询入院以及出院的患者列表
     * @param workGroupId       工作组
     * @return ResultsDTO       查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findAllPatientListByWorkGroup(String workGroupId) throws Hl7Exception;
    
    /**
     * 根据住院号查询最后一次入科的患者
     * @param hosNo             住院号
     * @return ResultsDTO       查询出的患者列表
     * @throws Hl7Exception
     */
    public ResultsDTO findLastInDepartmentByHosNo(String hosNo) throws Hl7Exception;
}
